/** navbar.js By Beginner Emain:zheng_jinfan@126.com HomePage:http://www.zhengjinfan.cn */
layui.define(['element'], function (exports) {
    "use strict";
    var $ = layui.jquery,
        layer = parent.layer === undefined ? layui.layer : parent.layer,
        element = layui.element,
        cacheName = 'tb_navbar';

    var Navbar = function () {
		/**
		 *  默认配置 
		 */
        this.config = {
            elem: undefined, //容器
            data: undefined, //数据源
            spreadOne: false //设置是否只展开一个二级菜单
        };
        this.v = '1.0.0';
    };
    //渲染
    Navbar.prototype.render = function () {
        var _that = this;
        var _config = _that.config;
        if (typeof (_config.elem) !== 'string' && typeof (_config.elem) !== 'object') {
            throw new Error('Navbar error: elem参数未定义或设置出错，具体设置格式请参考文档API.');
        }
        var $container;
        if (typeof (_config.elem) === 'string') {
            $container = $('' + _config.elem + '');
        }
        if (typeof (_config.elem) === 'object') {
            $container = _config.elem;
        }
        if ($container.length === 0) {
            throw new Error('Navbar error:找不到elem参数配置的容器，请检查.');
        }
        if (_config.data === undefined && _config.url === undefined) {
            throw new Error('Navbar error:请为Navbar配置数据源.')
        }
        if (_config.data !== undefined && typeof (_config.data) === 'object') {
            var html = getHtml(_config.data);
            $container.html(html);
            element.init();
            _that.config.elem = $container;
        } else {
            layer.msg("data未找到数据", {
				icon: 5
			});
        }

        //只展开一个二级菜单
        if (_config.spreadOne) {
            var $ul = $container.children('ul');
            $ul.find('li.layui-nav-item').each(function () {
                $(this).on('click', function () {
                    $(this).siblings().removeClass('layui-nav-itemed');
                });
            });
        }
        return _that;
    };
	/**
	 * 配置Navbar
	 * @param {Object} options
	 */
    Navbar.prototype.set = function (options) {
        var that = this;
        that.config.data = undefined;
        $.extend(true, that.config, options);
        return that;
    };
	/**
	 * 绑定事件
	 * @param {String} events
	 * @param {Function} callback
	 */
    // Navbar.prototype.on = function (events, callback) {
    //     var that = this;
    //     var _con = that.config.elem;
    //     if (typeof (events) !== 'string') {
    //         throw new Error('Navbar error:事件名配置出错，请参考API文档.');
    //     }
    //     var lIndex = events.indexOf('(');
    //     var eventName = events.substr(0, lIndex);
    //     var filter = events.substring(lIndex + 1, events.indexOf(')'));
    //     if (eventName === 'click') {
    //         if (_con.attr('lay-filter') !== undefined) {
    //             _con.children('ul').find('li').each(function () {
    //                 var $this = $(this);
    //                 if ($this.find('dl').length > 0) {
    //                     var $dd = $this.find('dd').each(function () {
    //                         $(this).on('click', function () {
    //                             var $a = $(this).children('a');
    //                             var href = $a.data('url');
    //                             var icon = $a.children('i:first').data('icon');
    //                             var title = $a.children('cite').text();
    //                             var data = {
    //                                 elem: $a,
    //                                 field: {
    //                                     href: href,
    //                                     icon: icon,
    //                                     title: title
    //                                 }
    //                             }
    //                             callback(data);
    //                         });
    //                     });
    //                 } else {
    //                     $this.on('click', function () {
    //                         var $a = $this.children('a');
    //                         var href = $a.data('url');
    //                         var icon = $a.children('i:first').data('icon');
    //                         var title = $a.children('cite').text();
    //                         var data = {
    //                             elem: $a,
    //                             field: {
    //                                 href: href,
    //                                 icon: icon,
    //                                 title: title
    //                             }
    //                         }
    //                         callback(data);
    //                     });
    //                 }
    //             });
    //         }
    //     }
    // };
	/**
	 * 清除缓存
	 */
    // Navbar.prototype.cleanCached = function () {
    //     layui.data(cacheName, null);
    // };
	/**
	 * 获取html字符串
	 * @param {Object} data
	 */
    function getHtml(data) {
        //debugger;
        var ulHtml = '';
        for (var i = 0; i < data.length; i++) {
            if (data[i].spread) {
                ulHtml += '<li class="layui-nav-item layui-nav-itemed" data-name="'+data[i].title+'">';
            } else {
                ulHtml += '<li class="layui-nav-item" data-name="'+data[i].title+'">';
            }
            if (data[i].children !== undefined && data[i].children !== null && data[i].children.length > 0) {
                ulHtml += '<a href="javascript:;">';
                if (data[i].icon !== undefined && data[i].icon !== '') {
                    ulHtml += '<i class="layui-icon ' + data[i].icon + '" aria-hidden="true"></i>';
                }
                ulHtml += '<cite>' + data[i].title + '</cite>'
                ulHtml += '</a>';
                ulHtml += '<dl class="layui-nav-child">'
                for (var j = 0; j < data[i].children.length; j++) {
                    ulHtml += '<dd title="' + data[i].children[j].title + '" data-name="' + data[i].children[j].title + '">';
                    ulHtml += '<a lay-href="' + data[i].children[j].href + '">';
                    if (data[i].children[j].icon !== undefined && data[i].children[j].icon !== '') {
                        ulHtml += '<i class="layui-icon  ' + data[i].children[j].icon + '"></i>';
                    }
                    ulHtml += '<cite>' + data[i].children[j].title + '</cite>';
                    ulHtml += '</a>';
                    ulHtml += '</dd>';
                }
                ulHtml += '</dl>';
            } else {
                var dataUrl = (data[i].href !== undefined && data[i].href !== '') ? 'data-url="' + data[i].href + '"' : '';
                ulHtml += '<a href="javascript:;" ' + dataUrl + ' lay-href="' + data[i].href + '" lay-tips="' + data[i].title + '">';
                if (data[i].icon !== undefined && data[i].icon !== '') {
                    ulHtml += '<i class="layui-icon  ' + data[i].icon + '"></i>';
                }
                ulHtml += '<cite>' + data[i].title + '</cite>'
                ulHtml += '</a>';
            }
            ulHtml += '</li>';
        }
        return ulHtml;
    }

    var navbar = new Navbar();

    exports('navbar', function (options) {
        return navbar.set(options);
    });
});